package br.com.vdn.vo;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Proxy;
import org.hibernate.annotations.Type;

import br.com.util.tipodado.DataHora;
import br.com.util.tipodado.Flag;
import br.com.util.tipodado.Inteiro;
import br.com.util.tipodado.InteiroLongo;
import br.com.util.tipodado.Moeda;
import br.com.util.tipodado.Taxa;

@Entity
@Table(name="TBIVEN")
@Proxy(lazy=true)
public class ItensVendaVo implements Serializable
{
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name = "IVENCD")
	@GeneratedValue(generator = "InteiroSequenceGenerator")
	@GenericGenerator(name = "InteiroSequenceGenerator", strategy = "br.com.util.tipodado.hibernate.generator.InteiroSequenceGenerator", parameters = { @Parameter(name = "sequence", value = "SQIVEN") })
	@Type(type = "br.com.util.tipodado.hibernate.InteiroLongoUT")
	private InteiroLongo codigo;
	
	@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "VENCD")
	private VendaVo vendaVo;
	
	@Column(name = "IVENSQ")
	@Type(type = "br.com.util.tipodado.hibernate.InteiroUT")
	private Inteiro sequencial;
	
	@Column(name = "IVENDS")
	private String descricao;
	
	@Column(name = "IVENQT")
	@Type(type = "br.com.util.tipodado.hibernate.InteiroUT")
	private Inteiro quantidade;
	
	@Column(name = "IVENUNI")
	private String unidade;

	@Column(name = "IVENLRG")
	@Type(type = "br.com.util.tipodado.hibernate.TaxaUT")
	private Taxa largura;
	
	@Column(name = "IVENALT")
	@Type(type = "br.com.util.tipodado.hibernate.TaxaUT")
	private Taxa altura;
	
	@Column(name = "IVENVLUNI")
	@Type(type = "br.com.util.tipodado.hibernate.MoedaUT")
	private Moeda valorUnitario;
	
	@Column(name = "IVENVLTLT")
	@Type(type = "br.com.util.tipodado.hibernate.MoedaUT")
	private Moeda valorTotal;
	
	@Column(name = "IVENFGATV")
	@Type(type = "br.com.util.tipodado.hibernate.FlagUT")
	private Flag flagAtivo;
	
	@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "USRCDINC")
	private UsuarioVo usuarioInclusaoVo;
	
	@Column(name = "USRDTINC")
	@Type(type = "br.com.util.tipodado.hibernate.DataHoraUT")
	private DataHora dataInclusao;
	
	@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "USRCDALT")
	private UsuarioVo usuarioAlteracaoVo;
	
	@Column(name = "USRDTALT")
	@Type(type = "br.com.util.tipodado.hibernate.DataHoraUT")
	private DataHora dataAlteracao;

	public InteiroLongo getCodigo()
	{
		return codigo;
	}

	public void setCodigo(InteiroLongo codigo)
	{
		this.codigo = codigo;
	}

	public VendaVo getVendaVo()
	{
		return vendaVo;
	}

	public void setVendaVo(VendaVo vendaVo)
	{
		this.vendaVo = vendaVo;
	}

	public Inteiro getSequencial()
	{
		return sequencial;
	}

	public void setSequencial(Inteiro sequencial)
	{
		this.sequencial = sequencial;
	}

	public String getDescricao()
	{
		return descricao;
	}

	public void setDescricao(String descricao)
	{
		this.descricao = descricao;
	}

	public Inteiro getQuantidade()
	{
		return quantidade;
	}

	public void setQuantidade(Inteiro quantidade)
	{
		this.quantidade = quantidade;
	}

	public String getUnidade()
	{
		return unidade;
	}

	public void setUnidade(String unidade)
	{
		this.unidade = unidade;
	}

	public Taxa getLargura()
	{
		return largura;
	}

	public void setLargura(Taxa largura)
	{
		this.largura = largura;
	}

	public Taxa getAltura()
	{
		return altura;
	}

	public void setAltura(Taxa altura)
	{
		this.altura = altura;
	}

	public Moeda getValorUnitario()
	{
		return valorUnitario;
	}

	public void setValorUnitario(Moeda valorUnitario)
	{
		this.valorUnitario = valorUnitario;
	}

	public Moeda getValorTotal()
	{
		return valorTotal;
	}

	public void setValorTotal(Moeda valorTotal)
	{
		this.valorTotal = valorTotal;
	}

	public Flag getFlagAtivo()
	{
		return flagAtivo;
	}

	public void setFlagAtivo(Flag flagAtivo)
	{
		this.flagAtivo = flagAtivo;
	}

	public UsuarioVo getUsuarioInclusaoVo()
	{
		return usuarioInclusaoVo;
	}

	public void setUsuarioInclusaoVo(UsuarioVo usuarioInclusaoVo)
	{
		this.usuarioInclusaoVo = usuarioInclusaoVo;
	}

	public DataHora getDataInclusao()
	{
		return dataInclusao;
	}

	public void setDataInclusao(DataHora dataInclusao)
	{
		this.dataInclusao = dataInclusao;
	}

	public UsuarioVo getUsuarioAlteracaoVo()
	{
		return usuarioAlteracaoVo;
	}

	public void setUsuarioAlteracaoVo(UsuarioVo usuarioAlteracaoVo)
	{
		this.usuarioAlteracaoVo = usuarioAlteracaoVo;
	}

	public DataHora getDataAlteracao()
	{
		return dataAlteracao;
	}

	public void setDataAlteracao(DataHora dataAlteracao)
	{
		this.dataAlteracao = dataAlteracao;
	}

}
